/*
    created: 2023/4/9
    filename: linerBystatic.h
    author: 李东霖 
    purpose: 线性表通过静态数组实现的定义

*/
#ifndef _LINERBYSTATIC_H_
#define _LINERBYSTATIC_H_

#include<string.h>
#include<stdio.h>

#define MAXSIZE 10
typedef int ElemType;

//声明一个顺序表 
typedef struct
{
   ElemType data[MAXSIZE];
    unsigned int length;
}SeqList,*PSeqList;

//声明操作

//顺序表的初始化。
void InitList(PSeqList list);

//销毁顺序表
void DestroyList(PSeqList list);

//在顺序表list的第ii个位置插入一个元素elem。-1--elem或者list不存在 1-成功 0-失败
int InsertList(PSeqList list,unsigned int ii,ElemType *ee);

//在顺序表list的头结点前插入一个元素elem。-1--elem或者list不存在 1-成功 0-失败
int Push_front(PSeqList list,ElemType *elem);

//在顺序表list的尾结点后插入一个元素elem。-1--elem或者list不存在 1-成功 0-失败
int Push_back(PSeqList list,ElemType *elem);

//删除顺序表中第pos个位置的元素 返回值：-1-list不存在 1-成功 0-失败
int DeleteElem(PSeqList list, unsigned int pos);

//删除顺序表中的头结点 返回值：-1-list不存在 1-成功 0-失败
int PopFront(PSeqList list);

//删除顺序表中的尾结点 返回值：-1-list不存在 1-成功 0-失败
int PopBack(PSeqList list);

//获取线性表第pos位置的元素的值，存放到elem中 -1--elem或者list不存在 1-成功 0-失败
int GetElem(PSeqList list,unsigned int pos,ElemType *elem);

//查找元素elem在顺序表list中的位置 返回值：-1-elem或者list不存在  0-元素elem在表中不存在 >0-位置 
int LocateElem(PSeqList list,const ElemType *elem);

//判断是否为空表 -1-不存在，1-为空 0-非空
int Is_empty(PSeqList list);

//求取线性表长度  -1-线性表不存在 >=-表的元素个数
int ListLength(PSeqList list);

//输出线性表  
void DispList(PSeqList list);

//清空线性表  
void ClearList(PSeqList list);

#endif //!_LINERBYSTATIC_H_